Techniques for displaying shared digital assets consistently across different displays

ABSTRACT

In one embodiment of the present invention, a collaboration engine is configured to display shared digital assets consistently across displays. The collaboration engine receives container metadata generated based on a first location and first size of a digital asset within a first scaled workspace displayed on a first display. In response, the collaboration engine computes a second location and second size of the digital asset based on the container metadata and the size of a second scaled workspace. Finally, the collaboration engine configures the second device to display the digital asset within the second scaled workspace based on the second location and the second size. Notably, the container metadata correlates to the appearance of the digital asset on the first display, and the appearance of the digital asset on the second display correlates to the container metadata. Consequently, the appearance of the digital asset is consistent across the displays.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the priority benefit of the U.S. ProvisionalPatent Application having Ser. No. 62/156,168 (Attorney Docket NumberPRSM/0007USL SK0115B1USP1) and filed on May 1, 2015. The subject matterof this related application is hereby incorporated herein by reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention generally relates to sharing and displayingdigital content and, more specifically, to techniques for displayingshared digital assets consistently across different displays.

2. Description of the Related Art

A typical collaboration software application included as part of acollaboration system enables multiple computer-based devices to sharedigital assets. For example, a collaboration software application couldenable a laptop at one physical location and a tablet at a secondphysical location to display a shared workspace that includes a webbrowser, presentation slides, and images. In such a set-up, eachcomputer-based device would render and display the shared workspacebased on the aspect ratio and resolution of the display associated withthe computer-based device.

One drawback of conventional systems is that, if the aspect ratios ofthe displays vary, then the placement and size of the digital assetswithin the shared workspace also vary across the displays. For example,suppose that a collaboration system includes a “wide” display and a“narrow” display, where the aspect ratio of the wide display is 3:1, andthe aspect ratio of the narrow display is 2:1. The appearance of eachdigital asset in the shared workspace displayed on the wide displaycould appear to be “stretched” relative to the appearance of the digitalasset on the narrow display. Such inconsistency in the appearances ofdigital assets to different users in a collaboration can reduce theoverall quality of the collaboration for some or all of the users andcan even inhibit the ability of users who see particularly “stretched”versions of shared digital assets from being able to participateeffectively in the collaboration.

Another drawback of conventional systems is that the appearance of“reflowable” content making up a particular digital asset may varyacross different displays. An example of reflowable content is aHyperText Markup Language (HTML) text. When reflowable content isdisplayed on display associated with a particular computer-based device,a rendering engine local to the device adapts the reflowable contentrendered as part of the digital asset based on the size of the digitalasset, the aspect ratio of the display, and/or the resolution of thedisplay. Because the amount of reflowable content making up a digitalasset can vary based on the characteristics of the display, theappearance of the reflowable content may vary across the displays in acollaboration system if those displays have different characteristics.

For example, suppose that a shared workspace includes an HTML documentwith a million lines of text. Users viewing the HTML document via arelatively high resolution display would see more lines of text thanusers viewing the HTML document via a relatively low resolution display.In general, variations in the amount of data that is visible todifferent users in a collaboration can reduce the overall quality of thecollaboration for some or all of the users. In particular, suchinconsistencies can inhibit the ability of users who see less data thanother users from being able to participate effectively in thecollaboration.

As the foregoing illustrates, what is needed in the art are moreeffective techniques for sharing and displaying digital assets acrossdifferent computer-based devices.

SUMMARY OF THE INVENTION

Various embodiments of the present invention include acomputer-implemented method for sharing a digital asset across multipledisplays. The method includes receiving container metadata that isgenerated in response to a digital asset having a first size beingplaced at a first location within a first scaled workspace that isdisplayed, at least in part, on a first display coupled to a firstdevice; computing, based on the container metadata and a size associatedwith a second scaled workspace that is displayed, at least in part, on asecond display coupled to a second device, a second location within thesecond scaled workspace and a second size for the digital asset; andcausing the second device to display the digital asset within the secondscaled workspace at the second location and at the second size.

At least one advantage of the disclosed techniques is that theappearance of each digital asset to viewers is consistent irrespectiveof the display. In particular, the aspect ratio of the digital assetdoes not vary based on the display. Further, the amount of content thatmakes up the digital asset is the same across the displays. Accordingly,the ability of the viewers to participate effectively in a collaborationis optimized.

BRIEF DESCRIPTION OF THE DRAWINGS

So that the manner in which the above recited features of the presentinvention can be understood in detail, a more particular description ofthe invention, briefly summarized above, may be had by reference toembodiments, some of which are illustrated in the appended drawings. Itis to be noted, however, that the appended drawings illustrate onlytypical embodiments of this invention and are therefore not to beconsidered limiting of its scope, for the invention may admit to otherequally effective embodiments.

FIG. 1 is a block diagram of a display system configured to implementone or more aspects of the present invention;

FIG. 2 is a conceptual diagram of a collaboration system configured toshare content streams across display systems, according to variousembodiments of the present invention;

FIG. 3 is a more detailed block diagram of the streaming infrastructureof FIG. 2, according to various embodiments of the present invention;

FIG. 4 is a more detailed block diagram of the messaging infrastructureof FIG. 2, according to one embodiment of the present invention;

FIG. 5 is a conceptual diagram of a collaboration system configured toshare digital assets across display systems, according to variousembodiments of the present invention;

FIG. 6 is a more detailed illustration of how the collaboration enginesof FIG. 5 display a shared digital asset, according to variousembodiments of the present invention;

FIG. 7 is a flow diagram of method steps for displaying a shared digitalasset across multiple displays, according to various embodiments of thepresent invention; and

FIG. 8 is an example of how digital assets are positioned and displayedwithin a workspace that is shared across the displays of FIG. 5,according to various embodiments of the present invention.

DETAILED DESCRIPTION

In the following description, numerous specific details are set forth toprovide a more thorough understanding of the present invention. However,it will be apparent to one of skill in the art that the presentinvention may be practiced without one or more of these specificdetails. In other instances, well-known features have not been describedin order to avoid obscuring the present invention.

System Overview

FIG. 1 is a block diagram of a display system 100 configured toimplement one or more aspects of the present invention. As shown,display system 100 includes, without limitation, a central controller110, a display 120, and an appliance 140. In some embodiments, display120 is a display wall that includes multiple display tiles. Centralcontroller 110 receives digital image content 101 from the appliance 140or from an information network or other data routing device, andconverts said input into image data signals 102. Thus, digital imagecontent 101 may be generated locally, with appliance 140, or from someother location. For example, when display system 100 is used for remoteconferencing, digital image content 101 may be received via anytechnically feasible communications or information network, wired orwireless, that allows data exchange, such as a wide area network (WAN),a local area network (LAN), a wireless (Wi-Fi) network, and/or theInternet, among others.

Central controller 110 includes a processor 111 and memory 112. Theprocessor 111 may be any suitable processor implemented as a centralprocessing unit (CPU), a graphics processing unit (GPU), anapplication-specific integrated circuit (ASIC), a field programmablegate array (FPGA), any other type of processing unit, or a combinationof different processing units, such as a CPU configured to operate inconjunction with a GPU. In general, processor 111 may be any technicallyfeasible hardware unit capable of processing data and/or executingprogram code and software applications to facilitate operation ofdisplay system 100, including software applications 151, renderingengine 152, spawning module 153, and touch module 154. The processor 111executes software and performs the functions and operations describedherein. During operation, software applications 151, rendering engine152, spawning module 153, and touch module 154 may reside in memory 112.Alternatively or additionally, software applications 151 may also residein appliance 140. In some embodiments, one or more of 151-154 may beimplemented in firmware, either in central controller 110 and/or inother components of display system 100.

Memory 112 may include volatile memory, such as a random access memory(RAM) module, and non-volatile memory, such as a flash memory unit, aread-only memory (ROM), or a magnetic or optical disk drive, or anyother type of memory unit or combination thereof. Memory 112 isconfigured to store any software programs, operating system, drivers,and the like, that facilitate operation of display system 100, includingsoftware applications 151, rendering engine 152, spawning module 153,and touch module 154.

Display 120 may include the display surface or surfaces of anytechnically feasible display device or system type, including but notlimited to the display surface of a light-emitting diode (LED) display,a digital light (DLP) or other projection displays, a liquid crystaldisplay (LCD), optical light emitting diode display (OLED),laser-phosphor display (LPD) and/or a stereo 3D display all arranged asa single stand-alone display, head mounted display or as a single ormulti-screen tiled array of displays. Display sizes may range fromsmaller handheld or head mounted display devices to full wall displays.In the example illustrated in FIG. 1, display 120 includes a pluralityof display light engine and screen tiles 130 mounted in a 2×2 array.Other configurations and array dimensions of multiple electronic displaydevices, e.g. 1×4, 2×3, 5×6, etc., also fall within the scope of thepresent invention.

In operation, display 120 displays image data signals 102 output fromcontroller 110. For a tiled display, as illustrated in FIG. 1, imagedata signals 102 are appropriately distributed among display tiles 130such that a coherent image is displayed on a display surface 121 ofdisplay 120. Display surface 121 typically includes the combined displaysurfaces of display tiles 130. In addition, display 120 includes atouch-sensitive surface 131 that extends across part or all surface areaof display tiles 130. In one embodiment, touch-sensitive surface 131senses touch by detecting interference between a user and one or morebeams of light, including, e.g., infrared laser beams. In otherembodiments, touch sensitive surface 131 may rely on capacitive touchtechniques, including surface capacitance, projected capacitance, ormutual capacitance, as well as optical techniques, acoustic wave-basedtouch detection, resistive touch approaches, and so forth, withoutlimitation. Touch-sensitive surface 131 enables users to interact withdigital assets displayed on the wall implementing touch gesturesincluding tapping, dragging, swiping, and pinching. These touch gesturesmay replace or supplement the use of typical peripheral I/O devices,although touch-sensitive surface 131 may receive inputs from suchdevices, as well. In this regard, the display system 100 may alsoinclude typical peripheral I/O devices (not shown), such as an externalkeyboard or mouse.

In the context of this disclosure, an “digital asset” may refer to anyinteractive renderable content that can be displayed on a display, suchas display 120, among others. Interactive renderable content isgenerally derived from one or more persistent or non-persistent contentstreams that include sequential frames of video data, correspondingaudio data, metadata, flowable/reflowable unstructured content, andpotentially other types of data. Generally, a digital asset may bedisplayed within an adjustable presentation window referred to herein asa “container.” More specifically, a user may change the size and/oraspect ratio of the container, while content within adjusts according toone or more aspects of the invention to the changed size and/or aspectratio, either as the change is taking place or at a determinedconclusion of the change. For simplicity, a digital asset andcorresponding adjustable container are generally referred to herein as asingle entity, i.e., an “digital asset.” The digital assets may comprisecontent sources that are file system-based, Hypertext TransferProtocol-based, streamed or Live Source. a digital asset generallyincludes at least one display output rendered by a software application,such as a GUI of the software application. In one embodiment, thedisplay output is a portion of a content stream. In addition, a digitalasset is generally configured to receive one or more softwareapplication inputs via a pointer input or touch or gesture-sensitivedisplay surface of a collaboration client system 140 facilitatinginteractivity, i.e., inputs received via the pointer input or touch orgesture-sensitive display surface are received by the digital asset andtreated as input for the software application associated with thedigital asset. Thus, unlike a fixed image, a digital asset is aninteractive element that enables interaction with the softwareapplication associated with the digital asset, for example, for sizing,positioning, editing, annotating manipulation of the digital asset. Forexample, a digital asset may include select buttons, pull-down menus,control sliders, etc. that are associated with the software applicationand can provide inputs to the software application.

As also referred to herein, a “workspace” is a virtual digital canvas onwhich digital assets associated therewith, and their correspondingcontent streams, are displayed within a suitable “viewport window” ondisplay 120. Thus, a workspace may comprise one or more associateddigital assets (each digital asset displayed within a container),whereby the entire workspace is displayed within a adjustable viewportwindow. A workspace may be displayed in the entire potential renderarea/space of the display 120, so that only a single workspace can bedisplayed on the surface thereof. In this case, the area of the viewportwindow that displays the workspace comprises the entire render area ofthe display 120. In other embodiments, however, the workspace and theviewport window may be displayed in a sub-area of the total display areaof the display 120 that does not comprise the entire render area of thedisplay 120. For example, multiple workspaces may be displayed inmultiple viewport windows on the display 120 concurrently, whereby eachworkspace and viewport window does not correspond to the entire displaysurface. Each digital asset associated with a workspace, and contentstream(s) corresponding to the digital asset, are displayed in acontainer according to defined dimensions (height and width) and alocation within the workspace and viewport window. The digital asset andpresentation window dimensions and location may also be user-adjustable.As also referred to herein, a “project” may comprise a set of one ormore related workspaces.

Touch-sensitive surface 131 may be a “multi-touch” surface, which canrecognize more than one point of contact on display 120, enabling therecognition of complex gestures, such as two or three-finger swipes,pinch gestures, and rotation gestures as well as multiuser two, four,six etc. hands touch or gestures. Thus, one or more users may interactwith digital assets on display 120 implementing touch gestures such asdragging to reposition digital assets on the screen, tapping digitalassets to display menu options, swiping to page through digital assets,or implementing pinch gestures to resize digital assets. Multiple usersmay also interact with digital assets on the screen simultaneously.Again, examples of digital assets include application environments,images, videos, web browsers, documents, mirroring or renderings oflaptop screens, presentation slides, content streams, and so forth.Touch signals 103 are sent from a touch panel associated with a display120 to central controller 110 for processing and interpretation.

It will be appreciated that the system shown herein is illustrative onlyand that variations and modifications are possible. For example, any ofsoftware applications 151, rendering engine 152, spawning module 153,and touch module 154 may reside outside of central controller 110.

FIG. 2 is a conceptual diagram of a collaboration system 200 configuredto share content streams across display systems, according to variousembodiments of the present invention. As shown, collaboration system 200includes, without limitation, display systems 100(A) and 100(B) coupledtogether via a communication infrastructure 210. As shown in FIG. 2, thecommunication infrastructure 210 includes streaming infrastructure 230and messaging infrastructure 240. Additionally, display system 100(A) isshown to include appliance 140(A) as well as display 120(A), and displaysystem 100B is shown to include appliance 140(B) as well as display120(B). For illustrative purposes, the appliances 140(A) and 140(B) eachinclude a central controller 110 (not shown). In one embodiment, each ofdisplays 120(A) and/or 120(B) represents a different instance of display120 of FIG. 1 Appliance devices 140(A) and 140(B) include clientapplications 250(A) and 250(B), respectively.

Display system 100(A) is configured to share a content stream A, viacommunication infrastructure 210, with display system 100(B). Inresponse, display system 100(B) is configured to retrieve content streamA from communication infrastructure 210 and to display that contentstream on display 120(B) with its content stream B. Likewise, displaysystem 100(B) is configured to share content stream B, via communicationinfrastructure 210, with display system 100(A). In response, displaysystem 100(A) is configured to retrieve content stream B fromcommunication infrastructure 210 and to display that content stream ondisplay 120(A) with its content stream A. In this fashion, displaysystems 100(A) and 100(B) are configured to coordinate with one anotherto generate a workspace that includes content streams A and B. Contentstreams A and B may be used to generate different digital assetsrendered within the workspace. In one embodiment, each of displaysystems 100(A) and 100(B) perform a similar process to reconstruct theworkspace, thereby generating a local version of that workspace that issimilar to other local versions of the workspace reconstructed at otherdisplay systems. As a general matter, the functionality of displaysystems 100(A) and 100(B) are coordinated by client applications 250(A)and 250(B), respectively.

Client applications 250(A) and 250(B) are software programs thatgenerally reside within a memory (not shown) associated with therespective appliances 140(A) and 140(B). Client applications 250(A) and250(B) may be executed by a processor unit (not shown) included withinthe respective computing appliances 140. When executed, clientapplications 250(A) and 250(B) setup and manage the workspace discussedabove in conjunction with FIG. 2, which, again, includes content streamsA and B. In one embodiment, the workspace is defined by metadata that isaccessible by both display systems 100(A) and 100(B). Each such displaysystem 100 may generate a local version of the workspace that issubstantially synchronized with the other local version, based on thatmetadata (discussed below in relation to FIG. 3).

In doing so, client application 250(A) is configured to transmit contentstream A to streaming infrastructure 230 for subsequent streaming todisplay system 100(B). Client application 250(A) also transmits amessage to display system 100(B), via messaging infrastructure 240, thatindicates to display system 100(B) that content stream A is availableand can be accessed at a location reflected in the message. In likefashion, client application 250(B) is configured to transmit contentstream B to streaming infrastructure 230 for subsequent streaming todisplay system 100(A). Client application 250(B) also transmits amessage to display system 100(A), via messaging infrastructure 240, thatindicates to display system 100(A) that content stream B is availableand can be accessed at a location reflected in the message. The messageindicates that access may occur from a location within streaminginfrastructure 230.

Client application 250(A) may also broadcast a message via messaginginfrastructure 240 to display system 100(B) that includes specifiesvarious attributes associated with content stream A that may be used todisplay content stream A. The attributes may include alocation/position, a picture size, an aspect ratio, or a resolution withwhich to display content stream A on display 120(B), among others, andmay be included within metadata described below in relation to FIG. 3.Client application 250(B) may extract the attributes from messaginginfrastructure 240, and then display content stream A at a particularposition on display 120(B), with a specific picture size, aspect ratio,and resolution, as provided by messaging infrastructure 240. Throughthis technique, display system 100(A) is capable of sharing contentstream A with display system 100(B). Display system 100(B) is configuredto perform a complimentary technique in order to share content stream Bwith display system 100(A).

Client applications 250(A) and 250(B) are thus configured to performsimilar techniques in order to share content streams A and B,respectively with one another. When client application 250(A) renderscontent stream A on display 120(A) and, also, streams content stream Bfrom streaming infrastructure 230, display system 100(A) thus constructsa version of a workspace that includes content stream A and B.Similarly, when client application 250(B) renders content stream B ondisplay 120(B) and, also streams content stream A from streaminginfrastructure 230, display system 100(A) similarly constructs a versionof that workspace that includes content streams A and B.

The display systems 100(A) and 100(B) discussed herein are generallycoupled together via streaming infrastructure 230 and messaginginfrastructure 240. Each of these different infrastructures may includehardware that is cloud-based and/or collocated on-premises with thevarious display systems. However, persons skilled in the art willrecognize that a wide variety of different approaches may be implementedto stream content streams and transport messages/messages betweendisplay systems.

FIG. 3 is a more detailed block diagram of the streaming infrastructureof FIG. 2, according to various embodiments of the present invention.Streaming infrastructure 230 may include a collaboration server 310, adatabase server 320, and a file server 330. Each server may comprise acomputer device having a processor (such as processor unit 111 describedin relation to FIG. 1) and a memory (such as memory 112 described inrelation to FIG. 1), the processor executing software for performingfunctions and operations described herein. Collaboration server 310,database server 320, and file server 330 may be implemented as shown asseparate and distinct computing devices/structures coupled to each otherand to appliance systems 140 via a network. Alternatively, thefunctionality of collaboration server 310, database server 320, and fileserver 330 may be implemented as a single computing device/structure ina single location, or in any other technically feasible combination ofstructures. Further, one or more of collaboration server 310, databaseserver 320, and/or file server 330 may be implemented as a distributedcomputing system. The network may be via any technically feasiblecommunications or information network, wired or wireless, that allowsdata exchange, such as a wide area network (WAN), a local area network(LAN), a wireless (WiFi) network, and/or the Internet, among others.

Collaboration server 310 coordinates the flow of information between thevarious appliances 140, database server 320, and file server 330. Thus,in some embodiments, collaboration server 310 is a streaming server forappliances 140. In some embodiments, the application program interface(API) endpoint for appliances 140 and/or business logic associated withstreaming infrastructure 230 resides in collaboration server 310. Inaddition, collaboration server 310 receives requests from appliances 140and can send notifications to appliances 140. Therefore, there isgenerally a two-way connection between collaboration server 310 and eachof appliances 140. Alternatively or additionally, appliances 140 maymake requests on collaboration server 310 through the API. For example,during collaborative work on a particular project via collaborationsystem 200, a collaboration appliance 140 may send a request tocollaboration server 310 for information associated with a digital assetto display the digital asset in a shared workspace of the particularproject.

Database server 320 (as well as collaboration server 310) may storemetadata 321 associated with collaboration system 200, such as metadatafor specific digital assets, workspaces, and/or projects. For example,such metadata may include which digital assets are associated with aparticular workspace, which workspaces are associated with a particularproject, the state of various settings for each workspace, annotationsmade to specific digital assets, etc. Metadata 321 may also includeaspect ratio metadata and digital asset metadata for each digital asset.In some embodiments, aspect ratio metadata may include an aspect ratioassigned to the project (referred to herein as the “assigned aspectratio”). An aspect ratio assigned to a project applies to the workspacesof the project so that all workspaces of the project have the sameaspect ratio assigned to the project. Container metadata for a digitalasset may specify a location/position and dimensions/size of the digitalasset within an associated workspace.

The container metadata indicates the position and size of a digitalasset, for example, implementing horizontal and vertical (x and y)coordinate values. In some embodiments, the container metadata mayexpress the position and size of a digital asset in percentage values.In such embodiments, the size (width and height) and position (x, y) ofthe digital asset is represented in terms of percent locations along anx-axis (horizontal axis) and y-axis (vertical axis) of the associatedworkspace. For example, the position and size of a digital asset may beexpressed as percentages of the workspace width and workspace height.The horizontal and vertical (x and y) coordinate values may correspondto a predetermined point on the digital asset, such as the position ofthe upper left corner of the digital asset. Thus, when display surfacesof appliances 140 have different sizes and/or aspect ratios, eachdigital asset can still be positioned and sized proportional to thespecific workspace in which is it being displayed. When multiple displaysystems 100 separately display a workspace, each display system 100 mayconfigure the local version of the workspace based on the receivedmetadata.

File server 330 is the physical storage location for some or all digitalasset content 331 that are rendered as files, such as documents, images,and videos. In some embodiments, file server 330 can receive requestsfor digital asset content 331 directly from appliances 140. For example,a digital asset, such as a word-processing document, may be associatedwith a shared workspace that is displayed on the display 120 of firstand second appliances 140. When the digital asset is modified by a userat the first collaboration appliance 140(A), metadata for a fileassociated with the digital asset is updated in file server 330 bycollaboration server 310, the second collaboration appliance 140(B)downloads the updated metadata for the file from file server 330, andthe digital asset is then displayed, as updated, on thegesture-sensitive display surface of the second collaboration appliance140(B). Thus, file copies of all digital assets for a particular sharedworkspace and project may be stored at the file server 330, as well asstored at each appliance 140 that is collaborating on a project.

Each of appliances 140 is an instance of a collaborative multi-mediaplatform disposed at a different location in collaboration system 200.Each collaboration appliance 140 is configured to provide a digitalsystem that can be mirrored at one or more additional and remotelylocated appliances 140. Thus, collaboration clients facilitate thecollaborative modification of digital assets, shared workspaces, and/orcomplete presentations or other projects, as well as the presentationthereof.

FIG. 4 is a more detailed block diagram of the messaging infrastructureof FIG. 2, according to one embodiment of the present invention. Asshown, messaging infrastructure 240 includes server machines 400(A) and400(B) coupled together via centralized cache and storage 420. Servermachine 400(A) is coupled to appliance 140(A) and includes a messagingapplication 410(A). Server machine 400(B) is coupled to appliance 140(B)and includes a messaging application 410(B).

Server machines 400(A) and 400(B) are generally cloud-based oron-premises computing devices that include memory (such as memory 112described in relation to FIG. 1) and processor units (such as processorunit 111 described in relation to FIG. 1) configured to store andexecute messaging applications 410(A) and 410(B), respectively.Messaging applications 410(A) and 410(B) are configured to generatereal-time socket connections with appliances 140(A) and 140(B),respectively, to allow messages to be transported quickly between theappliances 140. In one embodiment, messaging applications 410(A) and410(B) are implemented as ASP.NET applications and rely on signalRWebSockets to accomplish fast, real-time messaging.

Centralized cache and storage 420 provide a persistent messagingback-end through which messages can be exchanged between messagingapplications 410(A) and 410(B). In one embodiment, centralized cache andstorage includes a Redis cache backed by a SQL database. Messagingapplications 410(A) and 410(B) may be configured to periodically pollcentralized cache and storage 420 for new messages, thereby allowingmessages to be delivered to those applications quickly.

In operation, when display system 100(A) transmits a message indicatingthat content stream A is available on streaming infrastructure 510, asdescribed above, display system 100(A) transmits that message tomessaging application 410(A). Messaging application 410(A) may thenrelay the message to centralized cache and storage 420. Messagingapplication 410(B) polls centralized cache and storage 420 periodically,and may thus determine that that the message has arrived. Messagingapplication 410(B) then relays the message to display system 100(B).Display system 100(B) may then parse the message to retrieve anidentifier associated with display system 100(A), and then streamcontent associated with display system 100(A) from streaming server 610.

Collaboration System

FIG. 5 is a conceptual diagram of a collaboration system 500 configuredto share digital assets 582 across the display systems 100, according tovarious embodiments of the present invention. As shown, thecollaboration system 500 includes, without limitation, the communicationinfrastructure 210 connected with one or more of the display systems 100(such as 100(A), 100(B), and 100(C)), each of the display systems 100comprising the appliance 140 (such as 140(A), 140(B), and 140(C),respectively) and the display 120 (such as 120(A), 120(B), and 120(C),respectively). Each of the appliances 140 comprises a client computingdevice that includes, without limitation, the processor 112 and thememory 116. In some embodiments, the processor 112 and/or the memory 116may reside in the central controller 110 of FIG. 1.

In general, the processor 112 may be any technically feasible hardwareunit capable of processing data and/or executing program code andsoftware applications to facilitate operation of the display system 100.The processor 112 executes software and performs the functions andoperations described herein. The memory 116 may include volatile memory,such as a random access memory (RAM) module, and non-volatile memory,such as a flash memory unit, a read-only memory (ROM), or a magnetic oroptical disk drive, or any other type of memory unit or combinationthereof. The memory 116 is configured to store any software programs,operating system, drivers, and the like, that facilitate operation ofthe display system 100.

A collaboration engine 550 comprises a software program that generallyreside within the memory 116 and is executed by the processor 112included within the appliance 140. When executed, the collaborationengines 550 associated with the different appliances 140 work togetherto ensure that the digital assets 582 are presented in a consistentfashion across the displays 120. As used herein, the appliance 140 maybe referred to as a client device and these terms may be usedinterchangeably. For example, the appliance 140 may comprise aworkstation, a laptop computer, a tablet, cell phone or other hand-helddevice, or any other type of computing device.

The collaboration system 500 of FIG. 5 may share a workspace with thedisplay systems 100 and the appliances 140 having the displays 120 withvarious aspect ratios. As shown, a first appliance 140(A) is associatedwith a first display 120(A) having a first aspect ratio, a secondappliance 140(B) is associated with a second display 120(B) having asecond aspect ratio, and a third appliance 140(C) is associated with s athird display 120(C) having a third aspect ratio. In the example of FIG.5, relative to the first, second, and third aspect ratios, the firstaspect ratio is the largest aspect ratio, the second aspect ratio is thesecond largest aspect ratio, and the third aspect ratio is the smallestaspect ratio. As discussed above, a project has an assigned aspect ratiostored as aspect ratio metadata 321 on the database server 320 and/orcollaboration server 310. An aspect ratio assigned to a project appliesto the workspaces of the project so that all workspaces of the projecthave the same aspect ratio assigned to the project.

In the example of FIG. 5, the first aspect ratio is equal to or greaterthan the assigned aspect ratio of the workspace, the second aspect ratiois less than the assigned aspect ratio of the workspace, and the thirdaspect ratio is also less than the assigned aspect ratio of theworkspace. In some embodiments, an assigned aspect ratio is a fixedproperty on a project that may be modified by a user. The modifiedassigned aspect ratio is persistent and may cause digital asset contentto be reformatted to fit within the new aspect ratio. For example, inthe case where the modified assigned aspect ratio causes a decrease inthe width property, digital asset content x-values may be positionedproportionately into the new aspect ratio (scaled). In the case wherethe modified assigned aspect ratio causes an increase of the widthproperty, the workspace may be extended to the right with empty spaceand all digital asset content left unchanged.

Each appliance 140 displays the workspace in the viewport window 560(such as 560(A), 560(B), and 560(C)) of the display 120. In theembodiments described herein, the area of the viewport window 560displaying the workspace comprises the entire display area of thedisplay 120. As such, to perform the collaboration features describedherein, the dimensions and aspect ratio of the display 120 may be usedinstead of the dimensions and aspect ratio of the viewport window 560since these values are equal. In other embodiments, however, theviewport window 560 displaying the workspace may comprise a sub-area ofthe display 120 that does not comprise the entire/total display area ofthe display 120. In these embodiments, the viewport window 560 maycomprise an adjustable size bounded window within the screen display,the viewport window 560 representing a dedicated space for renderingworkspace data. Further, two or more viewport windows 560 may besimultaneously displayed in the same display 120 for displayingdifferent and distinct workspaces. In this case, to perform thecollaboration features described herein, the dimensions and aspect ratioof the viewport window 560 is to be used in place of the aspect ratio ofthe display 120.

In some embodiments, the collaboration engine 550 of each of theappliances 140 causes the display 120 to display, in the viewport window560, the workspace with the assigned aspect ratio, regardless of theaspect ratio of the display 120 itself. As referred to herein, theviewport window 560(A) displays a “scaled workspace” 580(A) of theworkspace. For the first display 120(A) having a first aspect ratio thatis equal to or greater than the assigned aspect ratio, the entire scaledworkspace 580(A) may be displayed in the viewport window 560(A) at onetime. For the second and third displays 120(B) and 120(C) having thesecond and third aspect ratios that are each less than the assignedaspect ratio, only a portion (sub-area) of the scaled workspaces 580(B)and 580(C), respectively, can be displayed in the viewport window 560(B)and 560(C), respectively, at one time.

In the embodiments described below, an aspect ratio is defined as theratio of a width dimension to a height dimension. Thus, the assignedaspect ratio of the workspace comprises a ratio of the width to theheight of the workspace, and the aspect ratio of the display 120 orviewport window 560 comprises a ratio of the width to the height of thedisplay area of the display 120 or viewport window 560. In the casewhere the viewport window 560 comprises the entire display area of thedisplay 120, the collaboration engine 550 uses the entire height of thedisplay 120 to display the scaled workspace 580 while enforcing/applyingthe aspect ratio assigned to the workspace. Given that the heightdimension (in pixels) of the scaled workspace 580 is set to equal theheight dimension (in pixels) of the display 120, the collaborationengine 550 then applies the assigned aspect ratio to determine the widthdimension (in pixels) of the scaled workspace 580.

When opening a project and associated workspace (stored on thecommunication infrastructure 210), each collaboration engine 550determines the pixel dimensions for rendering the scaled workspace 580to be displayed in the viewport window 560 based on characteristics ofits local display 120 (such as aspect ratio, height, and width). Asreferred to herein, the height of the display 120 comprises the verticalresolution of the display 120 and the terms “height” and “verticalresolution” are used interchangeably. Similarly, the width of thedisplay 120 comprises the horizontal resolution of the display 120 andthe terms “width” and “horizontal resolution” are used interchangeably.

The pixel dimensions of the scaled workspace 580 associated with aparticular display 120 comprise local pixel dimensions that may beunique to the display system 100 on which the scaled workspace 580 isbeing rendered and other display systems 100 may calculate differentlocal pixel dimensions based on the local display resolution. In someembodiments, the pixel dimensions associated with the scaled workspace580 associated with a particular display 120 is defined by the belowequations:

scaledWorkspaceHeight=displayHeight  (1)

scaledWorkspaceWidth=scaledWorkspaceHeight*projectAspectRatio  (2)

In these equations, it is assumed that the viewport window 560 comprisesthe entire display area of the display 120 and the aspect ratio isdefined as the ratio of width to height. In these formulas, thefollowing values are used:

-   -   displayHeight=display height (in pixels);    -   displayWidth=display width (in pixels);    -   projectAspectRatio=aspect ratio assigned to the project and all        workspaces;    -   scaledWorkspaceHeight=scaled workspace height (in pixels); and    -   scaledWorkspaceWidth=scaled workspace width (in pixels).

Thus, for each display 120 having an aspect ratio (width/height) valuethat is equal to or greater than the assigned aspect ratio value, thewidth dimension (in pixels) of the display 120 would be equal to orgreater than the determined width dimension (in pixels) of theassociated scaled workspace 580 (since the height dimension is the samefor the display 120 and the scaled workspace 580). Therefore, this typeof display 120 can display the entire associated scaled workspace 580 atone time and panning of the scaled workspace 580 would not be necessaryor enabled.

For each display 120 having an aspect ratio (width/height) value that isless than the assigned aspect ratio value, the width dimension (inpixels) of the display 120 are less than the determined width dimension(in pixels) of the associated scaled workspace 580 (since the heightdimension is the same for the display 120 and the scaled workspace 580).This type of display 120 can only display a portion (sub-area) of theassociated scaled workspace 580 and not the entire scaled workspace 580at one time. In particular, the display 120 can display the entireheight of the scaled workspace 580 but only a portion of the width ofthe scaled workspace 580. A display 120 with a lower aspect ratiodisplays a smaller portion of the scaled workspace 580 at one time thana display 120 with a higher aspect ratio. In general, where the aspectratio is defined as the ratio of width to height, the collaborationengine 550 may include a user-interface (UI) control for enabling a userto pan horizontally (left and right) to different portions of the scaledworkspace 580 displayed in the viewport window 560.

In other embodiments, the collaboration engine 550 may include auser-interface (UI) control for enabling a user to pan vertically (upand down) to different portions of the scaled workspace 580 displayed inthe viewport window 560. In these embodiments, the aspect ratio isdefined as the ratio of height to width. Similar techniques describedherein may be applied to provide vertical panning by switching theheight and width dimensions in the operations and calculations describedherein. For example, the collaboration engine 550 may set the widthdimension (in pixels) of the associated scaled workspace 580 to equalthe width dimension (in pixels) of the display 120 and apply theassigned aspect ratio (height/width) to determine the height dimension(in pixels) of the associate scaled workspace 580. For each display 120having an aspect ratio (height/width) that is equal to or greater thanthe assigned aspect ratio value, the height dimension (in pixels) of thedisplay 120 would be equal to or greater than the determined heightdimension (in pixels) of the associated scaled workspace 580 and panningof the associated scaled workspace 580 would not be necessary. For eachdisplay 120 having an aspect ratio (height/width) that is less than theassigned aspect ratio value, the height dimension (in pixels) of thedisplay 120 is less than the determined height dimension (in pixels) ofthe associated scaled workspace 580 and the display 120 can display onlya portion (sub-area) of the associated scaled workspace 580 at one time.Thus, for this display 120, vertical (up and down) panning of theassociated scaled workspace 580 would be enabled.

In other embodiments, the viewport window 560 does not comprise theentire display area of the display 120 and comprises a sub-area of theentire display area of the display 120. In this case, similar techniquesdescribed herein may be applied to by using the characteristics of theclient viewport window 560 in place of the characteristics of the clientdisplay 120. In particular, the width and height dimensions and theaspect ratio of the viewport window 560 may be used in place of thewidth and height dimensions and the aspect ratio of the display 120 inthe operations and calculations described herein. For example, todisplay the scaled workspace 580, the collaboration engine 550 may setthe height dimension (in pixels) of the scaled workspace 580 to equalthe height dimension (in pixels) of the viewport window 560 and applythe assigned aspect ratio to determine the width dimension (in pixels)of the scaled workspace 580. For a viewport window 560 having an aspectratio value that is equal to or greater than the assigned aspect ratiovalue, the width dimension of the viewport window 560 would be equal toor greater than the determined width dimension of the scaled workspace580 and thus panning of the scaled workspace 580 would not be necessaryor enabled. For a viewport window 560 having an aspect ratio value thatis less than the assigned aspect ratio value, the width dimension of thedisplay 120 is less than the determined width dimension of the scaledworkspace 580 and the viewport window 560 can display only a portion(sub-area) of the scaled workspace 580 at one time. Thus, for thisviewport window 560, panning of the scaled workspace 580 would beenabled.

In conventional collaboration systems, each of the display systems 100typically renders and displays digital assets 582 included in theworkspace 580 based on the aspect ratio, height, and width of thedisplay 120 included in the display system 100. However, thecharacteristics of each of the displays 120 may vary. For example, thedisplay 120(A) could have a height of 640 pixels, and a width of 1920pixels. Accordingly, the aspect ratio of the display 120(A) would be3:1. By contrast, the display 120(B) could have a vertical resolution of900 pixels, and a horizontal resolution of 1600 pixels. Consequently,the aspect ratio of the display 120(B) would be approximately 1.8:1. Ina conventional collaboration system, because the aspect ratio of thedisplay 120(A) is much larger than the aspect of the aspect ratio of thedisplay 120(B), the appearance of each of the digital assets 582included in the workspace could be stretched on the display 120(A)relative of the appearance of the digital asset on the display 120(B).For example, a particular digital asset 582 could appear as a square onthe display 120(A) and as a rectangle on the display 120(B).

Further, if the content that makes up a particular digital asset 582includes reflowable content, then the content that makes up the digitalasset 582 may vary across the displays 120. As referred to herein, a“reflowable asset” is a digital asset 582 that is made up of or includesreflowable content. An example of reflowable content is a HyperTextMarkup Language (HTML) text, where the instructions of controlling thecharacter rendering and line breaks of the content is a function of theresolution of the display 120, rendering application, and the size ofthe viewport window 560. Typically, the reflowable digital asset 582includes a rendering engine that adapts the reflowable content includedin the digital asset 582 to the application rendering environment. Inconventional collaboration systems, the reflowable digital asset 582 isdetermined by the extent of the reflowable content displayed on thedisplay 120 based on the size of the container associated with thedigital asset 582, the aspect ratio of the display 120, and/or theresolution of the display 120.

For example, suppose that a particular digital asset 582 that included aspreadsheet were to lie completely within the viewport windows 160(A)and 160(B) of the displays 120(A) and 120(B). Further, suppose that theaspect ratios, vertical resolution, and/or horizontal resolution of thedisplays 120(A) and 120(B) were not equal. In such a scenario, in aconventional collaboration system, the number of rows and/or columnsdisplayed via the display 120(A) would differ from the number of rowsand/or columns displayed via the display 120(B).

In general, such inconsistency in the appearances of the digital assets582 to different users in a collaboration can reduce the overall qualityof the collaboration for some or all of the users. Further, suchinconsistencies may even inhibit the ability of users who seeparticularly “stretched” versions of shared digital assets 582 and/orless reflowable content relative to other users from being able toparticipate effectively in the collaboration. For this reason, thecollaboration engines 550 are configured to ensure that the appearanceof the digital assets 582 is consistent across the displays 120, that isthe content rendered within the viewport windows 560 of the two distinctdisplays 120 would be the same for both.

To synchronize the displays 120, each appliance 140 may send messages toother appliances 140 that are sharing the same project via the messaginginfrastructure 240. For example, an appliance 140 may send a messageindicating the size and/or position of a particular digital asset 582within the scaled workspace 580 that is currently displayed in itsviewport window 560 to the other appliances 140 (via the messaginginfrastructure 240) whenever the size and/or position of the digitalasset 582 currently displayed in its viewport window 560 is changed. Thecollaboration engine 550 of each of the appliances 140 receiving thismessage may then update the size and/or position of the digital asset582 within the associated scaled workspace 580 accordingly.

Displaying Shared Assets Consistently Across Displays

As shown, three of the display systems 100 are configured, via thecollaboration engine 550, to share a workspace. Notably, the appearancesof the digital assets 582 within the scaled workspaces 580 areconsistent across the displays 120 included in the display systems 100.In particular, the digital asset 582(1) appears square and the digitalasset 582(2) appears rectangular to all the users, irrespective of thedisplay 120 via which each user is viewing the digital assets 582.Further, the spatial integrity of the digital assets 582 within thedifferent scaled workspaces 580 is consistent across the displays 120.This consistent spatial integrity is illustrated by the horizontalorientation and separation of the digital assets 582(1) and 582(2)within the scaled workspaces 580.

In operation, the collaboration engine 550 continually configures eachof the display systems 100 that share the digital assets 582 based oninteractions with the scaled workspaces 280. The interactions may beinitiated via any of the display systems 100 that share the workspace580. Upon receiving a change (addition, relocation, etc.) to the digitalasset 582 via a particular display system 100, the collaboration engine260 ensures that the digital asset 582 is displayed consistently acrossall the display systems 100.

FIG. 6 is a more detailed illustration of how the collaboration engines550 of FIG. 5 display a shared digital asset 582, according to variousembodiments of the present invention. For explanatory purposes, twosequences of event are labeled using numbered circles. The eventscommence when a user adds the digital asset 582 to the scaled workspace580(A) via the client application 142(A) included in the display system100(A). To display the digital asset 582 on the display 120(A), thecollaboration engine 550(A) executes the events labeled 1 a-4 a. Todisplay the digital asset 582 on the display 120(B), the collaborationengine 550(B) executes the events labeled 1 b-5 b. For explanatorypurposes, the context of FIG. 5 includes only the two collaborationengines 550(A) and 550(B). However, as persons skilled in the art willrecognize, in alternate embodiments any number of additionalcollaboration engines 550 may execute events similar the events labeled1 b-5 b to display the digital asset 582 on any number of additionaldisplays 120.

First, as the circle labeled “1 a” depicts, the collaboration engine550(A) receives a container 610(A) in which the asset 582 is displayedwithin the shared workspace 580(A) on the display 120(A). The container610(A) may be generated in any technically feasible fashion. Forexample, a user interface associated with the display system 100(A) maygenerate the container 610(A) based on user input. The container 610(A)specifies the placement and size of the digital asset 582 within thescaled workspace 580(A) that is displayed via the display 120(A).

In general, each container data 610 is associated with a particulardigital asset 582 and a particular scaled workspace 580. The containerdata 610 includes, without limitation, an X 602, a Y 604, a width 606,and a height 608. The X 602 and the Y 604 specify, respectively, ahorizontal and a vertical location of the digital asset 582 within thescaled workspace 580. The width 606 and the height 608 specify,respectively, the width and the height of the digital asset 582 withinthe scaled workspace 580. The X 602, the Y 604, the width 606, and theheight 608 are expressed in pixels.

The horizontal and vertical location of the digital asset 582 maycorrespond to any predetermined point on the digital asset 582, such asthe location of the upper left corner of the digital asset 582. Thehorizontal location is a coordinate of the location of the digital asset582 along an x-axis (horizontal axis) within the associated scaledworkspace 580. The vertical location is a coordinate of the location ofthe digital asset 582 along a y-axis (vertical axis) within theassociated scaled workspace 580. In alternate embodiments, the container610 may indicate the location and size of the associated digital asset582 within the associated scaled workspace 580 in any technicallyfeasible fashion and based on any coordinate system.

As the circle labeled “2A” depicts, the collaboration engine 550(A) thencomputes container metadata 630 associated with the digital asset 582.The container metadata 630 expresses the location and size of thedigital asset 582 in percentage values within the associated scaledworkspace 580. As shown, the container metadata 330 includes, withoutlimitation, a percentage X (PcyX) 632, a percentage Y (pctY) 634, apercentage width (pctWidth) 636, and a percentage height (pctHeight)638. The percentage X 632 and the percentage width 636 express,respectively, a horizontal location and width of the digital asset 582as percentages of the width of the associated scaled workspace 580. Thepercentage Y 634 and the percentage height 638 express, respectively, avertical location and height of the digital asset 582 as percentages ofthe height of the associated scaled workspace 580.

In general, the collaboration engine 550(A) computes the containermetadata 630 based on the container 610(A) and the size of the scaledworkspace 580(A). More precisely, the collaboration engine 550(A)divides the X 602 of the container 610(A) by the width of the scaledworkspace 580(A) to determine the pctX 632. The collaboration engine550(A) divides the Y 604 of the container 610(A) by the height of thescaled workspace 580(A) to determine the pctY 334. The collaborationengine 550(A) divides the width 606 of the container 610(A) by the widthof the scaled workspace 580(A) to determine the pctWidth 636. Finally,the collaboration engine 550(A) divides the height 608 of container610(A) by the height of the scaled workspace 580(A) to determine thepctHeight 638. In this fashion, the container metadata 630 expresses thelocation and size of the digital asset 582 as percentages of the scaledworkspace 580(A).

As the circle labeled “1 b” depicts, after computing the containermetadata 630, the collaboration engine 550(A) transmits the containermetadata 630 to the collaboration engine 550(B). As a general matter,the collaboration engines 550 may exchange information, including thecontainer metadata 630, in any technically feasible fashion. In someembodiments, the collaboration engines 550 receive workspace informationand one or more message objects from the communication infrastructure210 and store the workspace information and message objects locally tomemory or storage. In response to requests from each of thecollaboration engines 550, the various servers of the streaminginfrastructure 230 (such as the collaboration server 310, the databaseserver 320, and the file server 330) may work in conjunction to transmitand receive workspace information to synchronize such informationbetween the collaboration engines 550.

As the circle labeled “2 b” depicts, after receiving the containermetadata 630, the collaboration engine 550(B) computes the container610(B). The container 610(B) specifies the placement and size of thedigital asset 582 within the scaled workspace 580(B) that is displayedvia the display 120(B). To ensure that the digital asset 582 is placedin a consistent fashion within the scaled workspaces 580(A) and 580(B),the collaboration engine 550(B) computes the container 610(B) based onthe container metadata 630.

More specifically, to compute the container 610(B), the collaborationengine 550(B) performs a series of multiplication operations. Thecollaboration engine 550(B) performs a multiplication operation betweenthe percentage X 632 included in the container metadata 630 and thewidth of the scaled workspace 580(B) to compute the X 602 of thecontainer 610(B). The collaboration engine 550(B) performs amultiplication operation between the percentage Y 634 included in thecontainer metadata 630 and the height of the scaled workspace 580(B) tocompute the Y 604 of the container 610(B). The collaboration engine550(B) performs a multiplication operation between the percentage width636 included in the container metadata 630 and the width of the scaledworkspace 580(B) to compute the width 606 of the container 610(B).Finally, the collaboration engine 550(B) performs a multiplicationoperation between the percentage height 638 included in the containermetadata 630 and the height of the scaled workspace 580(B) to computethe height 608 of the container 610(B).

Because the collaboration engine 550(B) computes the container 610(B)based on the container metadata 330 that is derived from the container610(A), the containers 610(B) and 610(A) correlate with each other.Further, as described previously herein, the aspect ratio of the scaledworkspace 580(B) matches the aspect ratio of the scaled workspace580(A). Consequently, the computations performed by the collaborationengines 550 maintain the location and size of the digital asset 582relative to the other digital assets 582 across all the displays 120.

As persons skilled in the art will recognize, the digital asset 582 isautomatically rendered to the display 120(B) based on the container610(B). As a general matter, an external rendering engine may beconfigured to execute rendering operations in response to any change inthe asset 582, including the addition of the asset 582 and any change inthe container 610. In operation, as the asset 582 is manipulated by anyof the users via any of the shared workspaces 580, the collaborationengines 550 update the containers 610 and the asset 582 is displayed onthe displays 120.

Consequently, as the circle labeled “3 b” depicts, the digital asset 582is displayed on the display 120(B) based on the container 610(B).Initially, the digital asset 582 is displayed using default renderingoptions. If the digital asset 582 is not made up of any reflowablecontent, then displaying the digital asset 582 on the display 120(B) inthis fashion ensures that the digital asset 582 is displayedconsistently across the displays 120(A) and 120(B). Consequently, if thedigital asset 582 is not made up of any reflowable content, then thecollaboration engines 550 have finished sharing the digital asset 582and do not perform the optional events depicted as the circles labeled 3a, 4 a, 4 b, and 5 b.

However, if the digital asset 582 is made up of any reflowable content,then the reflowable content may not yet be displayed consistently acrossthe displays 120(A) and 120(B). For example, the default renderingoption for reflowable content is to determine the amount of reflowablecontent based on the container 610. As referred to herein, the “amount”of content is the quantity of data that makes up the rendered digitalasset 582. For example, the amount can be the number of byes of datamaking up the rendered digital asset 582. Operating using the defaultrendering option, if the digital asset 582 is made up of any reflowablecontent, then the external rendering engine computes and renders anamount of reflowable content based on the width 606 and the height 608of the container 610(B). The external rendering engine then displays thedigital asset 582, including any rendered reflowable content, at thelocation and size specified by the container 610(B).

Accordingly, operating under the default rendering option for reflowablecontent, the amount of any reflowable content that makes up the digitalasset 582 may vary across the displays 120(A) and 120(B). Because suchinconsistency may hinder the ability of users to effectivelycollaborate, if the digital asset 582 is made up of any reflowablecontent, then the collaboration engines 550(A) and 550(B) performadditional operations to ensure that the amount of any reflowablecontent that makes up the digital asset 582 is consistent across thedisplays 120(A) and 120(B). The collaboration engines 550 may determinewhether the digital asset 582 is made up of any reflowable content inany technically feasible fashion.

If the digital asset 582 is made up of any reflowable content, then thecollaboration engine 550(A) and 550(B) individually determine a“constraining” display 120 that is associated with the viewport window560 with the smallest height. More precisely, the collaboration engines550 individually compare the height of the viewport windows 560(A) and560(B) and set the constraining display 120 equal to the display 120that is associated with the viewport window 560 having the smallestheight (in pixels). For example, if the height of the viewport window560(A) is less than or equal to the height of the viewport window560(B), then the collaboration engines 550A and 550B set theconstraining display 120 equal to the display 120(A). By contrast, ifthe height of the viewport window 560(A) is greater than the height ofthe viewport window 560(B), then the collaboration engines 550A and 550Bset the constraining display 120 equal to the display 120(B).

Subsequently, for each of the non-constraining displays 120, theassociated collaboration engine(s) 550 independently compute a contentsize 650 for rendering the reflowable content. The content size 650includes a width and height of reflowable content that makes up thedigital asset 582. Although the collaboration engines 550 compute thecontent size 650 individually, the collaboration engines 550 implementsimilar algorithms and, consequently, compute the same values for thecontent size 650. In particular, the associated collaboration engines550 are configured to compute the content size 650 as the size of thecontainer 610 associated with the constraining display 120. Notably, theconstraining display 120 already displays the reflowable content thatmakes up the digital asset 582 at the content size 650 and,consequently, the collaboration engine 550 associated with theconstraining display 120 has finished performing asset sharingoperations.

For explanatory purposes only, in the context of FIG. 6, theconstraining display 120 is the display 120(A). Accordingly, afterdetermining that the constraining display 120 is the display 120(A), thecollaboration engine 550(A) has finished performing asset sharingoperations. Although the collaboration engine 550(A) does not performthe events depicted with the dashed circles labeled 3 a and 4 a, thedisplay 120(B) displays the digital asset 582(s) in the desired fashion.By contrast, as depicted with the circle labeled 4 b, the collaborationengine 550(B) computes the content size 650 based on the containermetadata 630 and the width and height of the scaled workspace 580associated with the constraining display 120.

To compute the content size, the collaboration engine 550(B) performstwo multiplication operations. The collaboration engines 550(B) performsa multiplication operation between the percentage width 636 included inthe container metadata 630 and the width of the scaled workspace 580(A)associated with the constraining display 120(A) to compute the width ofthe content size 650. The collaboration engine 550(B) then performs amultiplication operation between the percentage height 638 included inthe container metadata 630 and the height of the scaled workspace 580(A)associated with the constraining display 120(A) to compute the height ofthe content size 650.

After computing the content size 650, for each of the displays 120 otherthan the constraining display 120, the associated collaboration engine550 transmits the content size 650 to the external rendering engine tooverride the default amount of reflowable content to render. For each ofthe non-constraining displays 120, the external rendering engine thenre-renders the reflowable content based on the content size 650 and thecontainer 610 associated with the non-constraining display 120 in anytechnically feasible fashion.

More specifically, as depicted by the circle labeled “5 b,” thecollaboration engine 550(B) transmits the content size 650 to theexternal rendering engine to override the default amount of reflowablecontent to render to the display 120(B). The external rendering enginethen re-renders the reflowable content based on the content size 650 andthe container 610(B) to the display 120(B). For example, suppose thatthe size of the container 610(A) within which the asset 582 is displayedon the display 120(A) were to be 400×400. Further, suppose that the sizeof the container 610(B) within which the asset 582 is displayed on thedisplay 120(B) were to be 800×800. In such a scenario, the collaborationengine 550(B) would compute the content size to be 400×400. Thecollaboration engine 550(B) could set a rendering control via anapplication programming interface (API) included in the externalrendering engine. The rendering control could configure the externalrendering engine to render the asset 582 as if the container 610(B) were400×400 and then scale the rendering to fit the actual 800×800 size ofthe container 610(B). In this fashion, the content size 650 ensures thatthe appearance of the asset (including the reflowable content) isconsistent across the displays 120(A) and 120(B).

Note that the techniques described herein are illustrative rather thanrestrictive, and may be altered without departing from the broaderspirit and scope of the invention. As a general matter, the techniquesoutlined herein are applicable to facilitating the consistent appearanceof any number of the digital assets 582 across any number of thedisplays 120 based on any number of deterministic parameters. Further,in some embodiments, one or more of the techniques may be implementedwhile one or more of the other techniques my be omitted. For example, insome embodiments, the collaboration engine 550 may not adjust the amountof reflowable content that makes up the digital assets 582 across thedisplays 120. Further, the techniques may be modified and implementedacross any number of software and hardware units in any combination.

FIG. 7 is a flow diagram of method steps for displaying a shared digitalasset across multiple displays, according to various embodiments of thepresent invention. Although the method steps are described withreference to the systems of FIGS. 1-6, persons skilled in the art willunderstand that any system configured to implement the method steps, inany order, falls within the scope of the present invention. For example,in some embodiments the collaboration engine 550 may implement themethod steps to share any number of the digital assets 582 included inany number of workspaces across any number of the display systems 100 inany combination.

As shown, a method 700 begins at step 704, where the digital asset 582is added to a first scaled workspace 580 by a user via a first displaysystem 100. For example, a user could use a mouse included in thedisplay system 100(3) to add the digital asset 582 to the scaledworkspace 580(3) displayed on the display 120(3) included in the displaysystem 100(3). As described previously herein, the first container 610comprises the presentation window within which the asset is displayed onthe first display 120. The location and size of the first container 610is expressed in pixels relative to the first scaled workspace 580.

At step 706, a first collaboration engine 550 associated with the firstdisplay system 100 computes the container metadata 630 that isassociated with the digital asset 582. In general, the firstcollaboration engine 550 computes the container metadata 630 based onthe first container 610 and the size of the first scaled workspace 580.More precisely, the first collaboration engine 550 divides the X 602 ofthe first container 610 by the width of the first scaled workspace 580to determine the pctX 632. The first collaboration engine 550 dividesthe Y 604 of the first container 610 by the height of the first scaledworkspace 580 to determine the pctY 634. The first collaboration engine550 divides the width 606 of the first container 610 by the width of thefirst scaled workspace 580 to determine the pctWidth 636. Finally, thefirst collaboration engine 550 divides the height 608 of first container610 by the height of the first scaled workspace 580 to determine thepctHeight 688. In this fashion, the container metadata 630 expresses thelocation and size of the digital asset 582 as percentages of the scaledworkspace 580.

At step 708, for each of the other display systems 100, the associatedcollaboration engine 550 receives the container metadata 630. Thecollaboration engines 550 may exchange information, including thecontainer metadata 630, in any technically feasible fashion. In someembodiments, the collaboration engines 550 receive workspace informationand one or more message objects from the communication infrastructure210 and store the workspace information and message objects locally tomemory or storage. In response to requests from each of thecollaboration engines 550, the various servers of the streaminginfrastructure 230 (such as the collaboration server 310, the databaseserver 320, and the file server 330) may work in conjunction to transmitand receive workspace information to synchronize such informationbetween the collaboration engines 550.

As discussed above, each workspace may have an assigned aspect ratio,one or more associated scaled workspaces 580, one or more associatedviewport windows 560, and one or more assets 582. The returned workspaceinformation may include files for the asset content (such as documents,images, and videos) of all assets associated with the project. Theworkspace information may also include metadata, such as the containermetadata 610 specifying the location/position and dimensions/size ofeach of the digital assets 582 within its associated scaled workspace580 expressed in percentage values. Further, the workspace informationmay include the dimensions of all the scaled workspace 580 and all theviewport windows 560.

At step 710, for each of the other display systems 100, the associatedcollaboration engine 550 computes the container 610 within which thedigital asset 582 is displayed on the associated display 120. Thelocation and size of each of the containers 610 is expressed in pixels.For example, the collaboration engine 550(x) computes the container610(x) within which the digital asset 582 is displayed on the display120(x). In general, the collaboration engine 550 computes the containerdata 610 based on the container metadata 630 and the size of theassociated scaled workspace 580 in pixels. For example, thecollaboration engine 550(x) computes the container 610(x) within whichthe digital asset 582 is displayed on the display 120(x) based on thecontainer metadata 630 and the size of the scaled workspace 580(x) thatis displayed on the display 120(x). In this fashion, the container610(x) specifies the placement and size of the digital asset 582 withinthe scaled workspace 580(x).

More specifically, to compute a second “other” container 610, the secondcollaboration engine 550 performs a series of multiplication operations.The second collaboration engine 550 performs a multiplication operationbetween the percentage X 632 included in the container metadata 630 andthe width of the second scaled workspace 580 to compute the X 602 of thesecond container 610. The second collaboration engine 550 performs amultiplication operation between the percentage Y 634 included in thecontainer metadata 630 and the height of the second scaled workspace 580to compute the Y 604 of the second container 610. The secondcollaboration engine 550 performs a multiplication operation between thepercentage width 636 included in the container metadata 630 and thewidth of the second scaled workspace 580 to compute the width 606 of thesecond container 610. Finally, the second collaboration engine 550performs a multiplication operation between the percentage height 638included in the container metadata 630 and the height of the secondscaled workspace 580 to compute the height 608 of the second container610. For each of the displays 120 except the first display 120 (i.e.,“source” display), the associated collaboration engine 550 performs sucha series of multiplication operations to compute a different container610.

At step 712, for each of the other displays 120, the digital asset 582is automatically rendered based on the associated container 610. As ageneral matter, an external rendering engine may be configured toexecute rendering operations in response to any change in the asset 582,including the addition of the asset 582 and any change in the container610. In operation, as the asset 582 is manipulated by any of the usersvia any of the shared workspaces 580, the collaboration engines 550execute steps 704-712 to update the containers 610 and the asset 582 isdisplayed on each of the displays 120 according to the associatedcontainer 610.

Notably, at step 712, the digital asset 582 is initially displayed basedon default rendering options. For example, the default rendering optionfor reflowable content is to determine the amount of reflowable contentbased on the container 610. More specifically, by default and for eachof the displays 120, the external rendering engine is configured tocompute and render an amount of reflowable content based on the width606 and the height 608 of the container 610 associated with the display120. Accordingly, operating under the default rendering option forreflowable content, the amount of any reflowable content that makes upthe digital asset 582 may vary across the displays 120.

At step 714, each of the collaboration engines 550 (including thecollaboration engine 550 associated with the first “source” display 120)individually determines whether the digital asset 582 is made up of anyreflowable content. Each of the collaboration engines 550 may determinewhether the digital asset 582 is made up of any reflowable content inany technically feasible fashion. If, at step 714, the collaborationengines 550 determine that the digital asset 582 is not made up ofreflowable content, then the method 700 terminates. Because all thecontainers 610, including the first container 610, correlate to thecontainer metadata 630, the appearance of the digital asset 582 isconsistent across the displays 120.

If, however, at step 714, the collaboration engines 550 determine thatthe digital asset 582 is made up of reflowable content, then the method700 proceeds to step 716. At step 716, each of the collaboration engines550 determines the “constraining” display 120 that is associated withthe viewport window 560 having the smallest height. More precisely, thecollaboration engines 550 individually compare the height of theviewport windows 560 associated with all the displays 120 and select theconstraining display 120 as the display 120 that is associated with theviewport window 560 having the smallest height (in pixels). Thecollaboration engines 550 may compare the viewport windows 560 todetermine which of the viewport windows 560 has the smallest height inany technically feasible fashion.

At step 718, for each of the displays 120 other than the constrainingdisplay 120, the associated collaboration engine 550 computes thecontent size 650 associated with the digital asset 582. Each of thesecollaboration engine 550 computes the content size 650 based on thecontainer metadata 630 and the size of the scaled workspace 580associated with the constraining display 120. To compute the contentsize 650, each of the collaboration engines 550 performs twomultiplication operations. The collaboration engines 550 perform amultiplication operation between the percentage width 636 included inthe container metadata 630 and the width of the scaled workspace 580associated with the constraining display 120 to compute the width of thecontent size 650. The collaboration engines 550 perform a multiplicationoperation between the percentage height 638 included in the containermetadata 630 and the height of the scaled workspace 580 associated withthe constraining display 120 to compute the height of the content size650. In this fashion, each of the collaboration engines 550 that is notassociated with the constraining display 120 computes the same contentsize 650. Further the content size 650 matches the size of the container610 associated with the constraining display 120.

At step 720, for each of the displays 120 other than the constrainingdisplay 120, the associated collaboration engine 550 transmits thecontent size 650 to the external rendering engine to override thedefault amount of reflowable content to render. For each of thenon-constraining displays 120, the external rendering engine thenre-renders the reflowable content based on the content size 650 and thecontainer 610 associated with the display 120 in any technicallyfeasible fashion. For example, suppose that the size of the container610(x) within which the asset 582 is displayed on the display 120(x)were to be 800×800. Further, suppose that the content size 650 were tobe 400×400. In such a scenario, the collaboration engine 550(x) couldset a rendering control via an application programming interface (API)included in the external rendering engine. The rendering control couldconfigure the external rendering engine to render the asset 582 as ifthe container 610(x) were 400×400 and then scale the rendering to fitthe actual 800×800 size of the container 610(x).

As persons skilled in the art will recognize, the content size 650ensures that the appearance of the asset (including the reflowablecontent) is consistent across the displays 120. Further, theconstraining display 120 is already displaying the amount of contentbased on the associated container 610 that matches the content size 650.Consequently, the constraining display 120 does not need to performsteps 716-720 to ensure that the digital asset 582 is displayed in aconsistent fashion across the displays 120. By contrast, if the first“source” display 120 is not the constraining display 120, then the firstcollaboration engine 550 is one of the collaboration engines 550 thatperforms step 716-720 to ensure that the digital asset 582 is displayedin a consistent fashion across the displays 120. The method 700 thenterminates.

As a general matter, the method steps described herein may be modifiedto ensure that the digital assets 582 are displayed in a consistentmanner across the displays 120 in response to any modification that mayimpact the digital assets 582. Such modifications may includere-positioning or re-sizing the digital asset 582, re-sizing the scaledworkspaces 580, re-sizing the viewport windows 560, new displays 120entering the collaboration, displays 120 exiting the collaboration, etc.

For example, when the digital asset 582 is re-positioned or re-sized onthe display 120(B), the collaboration engines 120 may execute steps406-420 to ensure that the appearance of the digital asset 582 isupdated in a consistent manner across the displays 120. In anotherexample, if a new user joins the collaboration via a new display system100, then all the other collaboration engines 550 exchange synchronizinginformation with the collaboration engine 500 associated with the newdisplay system 100. Such information may include the height of theviewport windows 560, the size of the scaled workspaces 580, thecontainer metadata 630, etc. In response, the collaboration engines 550may perform steps 406-420 to re-render any number of the digital assets582.

FIG. 8 is an example of how digital assets 582 are positioned anddisplayed within a workspace that is shared across the displays 120 ofFIG. 5, according to various embodiments of the present invention. Thecontext of FIG. 8 is that the display systems 100(A) and 100(B) share aworkspace across the two displays 120(A) and 120(B). The display system100(A) displays the scaled workspace 580(A) associated with the displaysystem 100(A) in the static viewport window 160(A) that corresponds tothe entire display screen of the display 120(A). The display system100(B) displays the scaled workspace 580(B) associated with the displaysystem 100(B) in the static viewport window 560(B) that corresponds tothe entire display screen of the display 120(B). The assigned workspaceaspect ratio is 3:1.

The display 120(A) has a height of 640 pixels and a width of 1920pixels. Consequently, the aspect ratio of the display 120(A) is 3:1 andmatches the assigned workspace aspect ratio. The height of the scaledworkspace 580(A) matches the height of the display 120(A). The width ofthe scaled workspace 580(A) is the product of the height of the scaledworkspace 580(A) and the assigned workspace aspect ratio. Accordingly,the dimensions of the scaled workspace 580(A) match the dimensions ofthe display 120(A).

By contrast, the display 120(B) has a height of 900 pixels and a widthof 1600 pixels. Consequently, the aspect ratio of the display 120(B) isapproximately 1.8:1 and is smaller than the assigned workspace aspectratio. The height of the scaled workspace 580(B) matches the height ofthe display 120(B). The width of the scaled workspace 580(B) is theproduct of the height of the scaled workspace 580(B) and the assignedworkspace aspect ratio. Accordingly, the height of the scaled workspace580(B) is 900 pixels and matches the height of the display 120(B).However, the width of the scaled workspace 580(B) is 2700 pixels andexceeds the width of the display 120(B).

Because the horizontal extent of the scaled workspace 580(B) exceeds thehorizontal extent of the display 120(B), only a horizontal subset of thescaled workspace 580(B) is visible via the display 120(B) at any giventime. The display system 120(B) may implement any number and type ofnavigation techniques to enable users to view the entire scaledworkspace 580(B) via the display 120(B). For example, the display system120(B) may provide scroll bars that enable users to execute horizontalpanning operations.

As shown, the workspace includes the three digital assets 582. The threedigital assets 582 include a triangle, an oval, and a webpage. Thecollaboration engines 550(A) and 550(B) ensure the spatial integrity ofthe digital assets 582 across the scaled workspace 580. For example, theoval appears as an oval to all the users in the collaboration and doesnot appear stretched or compressed to any of the users. Further, for allthe users, the distance between the triangle and the webpage appear muchsmaller than the distance between the webpage and the oval. However, atthe time depicted, all three of the digital assets 582 are fully visiblevia the display 520(A) while only a portion of the triangle, the entirewebpage, and none of the oval are visible via the display 520(B).

Neither the triangle nor the oval is made up of reflowable content. Bycontrast, the webpage is made up of reflowable content. Because thewebpage is made up of reflowable content, the collaboration engines550(A) and 550(B) also configure the display systems 100(A) and 100(B)to render the same amount of webpage content. As previously describedherein, the collaboration engines 550(A) and 550(B) compare the heightsof the viewport window 560(A) and 560(B) and set the “constraining”display 120 to the display 120 that is associated with the viewportwindow 560 that has the smallest height.

Since the height of the viewport window 560(A) is 640 pixels and theheight of the viewport window 560(B) is 900 pixels, the collaborationengines 550(A) and 550(B) determine that the constraining display is thedisplay 120(A). As described previously herein, because thecollaboration engine 550(B) is not the constraining display 120, thecollaboration engine 550(B) computes the content size 650. Thecollaboration engine 550(B) performs a multiplication operation betweenthe percentage width 636 included in the container metadata 630associated with the webpage and the width of the scaled workspace 680(A)to compute the width included in the content size 650. Similarly, thecollaboration engine 550(B) performs a multiplication operation betweenthe percentage height 638 included in the container metadata 630associated with the webpage and the height of the scaled workspace680(A) to compute the height included in the content size 650. As aresult, the content size 650 matches the size of the container 610(A)within which the webpage is displayed on the display 120(A).

As depicted, the size of the container 610(A) is 600×200. Consequently,the content size 650 is also 600×200. The external rendering enginerenders the webpage to the display 120(A) based on the default renderingoption of determining the amount of reflowable content based on thecontainer 610(A). By contrast, the size of the container 610(B) is843×280. If the external rendering engine were to render the webpage tothe display 120(B) based on the default rendering option of determiningthe amount of reflowable content based on the container 610(B), then thedisplay 120(B) would display more of the webpage than the display120(A).

For this reason, the collaboration engine 550(B) configures the externalrendering engine to determine the amount of reflowable content to renderto the display 120(B) based on the content size 650 of 600×200. As partof rendering to the display 120(B), the external rendering engine thenscales the amount of reflowable content to fill the container 610(B). Inthis fashion, as shown, the extent of the content included in thewebpage and displayed via the display 120(B) matches the extent of thecontent included in the webpage and displayed via the display 120(A).

In sum, collaboration engines work together to configure computer-baseddevices to display digital assets within a shared workspace in aconsistent manner. The context of the collaboration is that each displaysystem displays a different scaled workspace on a different display. Theaspect ratios of the different displays may vary across the displays.However, the aspect ratio of each of the different scaled workspacesmatches a workspace aspect ratio associated with the workspace. Each ofthe collaboration engines is associated with a different display system.

Together, the collaboration engines ensure that the spatial integrity ofthe digital assets within the shared workspace is consistent across thedisplays. More specifically, when a digital asset is added or modifiedvia a “source” display system, the “source” collaboration engineassociated with the source display system computes percentage-basedcontainer metadata. The source collaboration engine computes thecontainer metadata based on a scaled workspace associated with thesource display system and a container that specifies the placement ofthe digital asset within this scaled workspace. Subsequently, for eachof the other display system, the associated collaboration enginecomputes a display-specific container based on size of the scaledworkspace associated with the display system and the container metadata.

For any digital assets that include reflowable content, thecollaboration engines configure the display systems to render thereflowable content in a consistent fashion. In operation, each of thecollaboration engines identifies a constraining display system as thedisplay system that includes the viewport window having the smallestheight. The collaboration engines associated with the non-constrainingdisplay systems then compute a content size to match the size specifiedby the container associated with the constraining display system.Finally, for each of the non-constraining display systems, theassociated collaboration engine configures the display system to renderthe digital asset within the scaled workspace associated with thedisplay system based on the container data associated with the displaysystem and the content size. As a result, the amount of rendered contentthat makes up a particular digital asset is homogeneous across thedisplays.

At least one advantage of the disclosed techniques is that, during apresentation of a shared workspace, the users partake in a substantiallysimilar viewing experience. Because the spatial integrity and content ofdigital assets within the shared workspace is consistent across thedisplays, users may collaborate in a coordinated fashion. By contrast,the appearance of digital assets in conventional collaboration systemsmay vary across displays and, consequently, hinder the ability of theusers to effectively work together.

The descriptions of the various embodiments have been presented forpurposes of illustration, but are not intended to be exhaustive orlimited to the embodiments disclosed. Many modifications and variationswill be apparent to those of ordinary skill in the art without departingfrom the scope and spirit of the described embodiments.

Aspects of the present embodiments may be embodied as a system, methodor computer program product. Accordingly, aspects of the presentdisclosure may take the form of an entirely hardware embodiment, anentirely software embodiment (including firmware, resident software,micro-code, etc.) or an embodiment combining software and hardwareaspects that may all generally be referred to herein as a “circuit,”“module” or “system.” Furthermore, aspects of the present disclosure maytake the form of a computer program product embodied in one or morecomputer readable medium(s) having computer readable program codeembodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

Aspects of the present disclosure are described above with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of thedisclosure. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, enable the implementation of the functions/acts specified inthe flowchart and/or block diagram block or blocks. Such processors maybe, without limitation, general purpose processors, special-purposeprocessors, application-specific processors, or field-programmableprocessors or gate arrays.

The flowchart and block diagrams in the figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present disclosure. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

While the preceding is directed to embodiments of the presentdisclosure, other and further embodiments of the disclosure may bedevised without departing from the basic scope thereof, and the scopethereof is determined by the claims that follow.

The invention claimed is:
 1. A non-transitory computer-readable medium storing program instructions that, when executed by a processor, cause the processor to display a digital asset that is shared across a plurality of displays, by performing the steps of: receiving container metadata that is generated in response to a digital asset having a first size being placed at a first location within a first scaled workspace that is displayed, at least in part, on a first display coupled to a first device; computing, based on the container metadata and a size associated with a second scaled workspace that is displayed, at least in part, on a second display coupled to a second device, a second location within the second scaled workspace and a second size for the digital asset; and causing the second device to display the digital asset within the second scaled workspace at the second location and at the second size.
 2. The non-transitory computer-readable medium of claim 1, wherein computing the second size comprises: performing a multiplication operation between a percentage width included in the container metadata and a width of the second scaled workspace; and performing a multiplication operation between a percentage height included in the container metadata and a height of the second scaled workspace;
 3. The non-transitory computer-readable medium of claim 1, wherein the digital asset includes reflowable content, and further comprising: determining that a first dimension of a first viewport window associated with the first display is less than a second dimension of a second viewport window associated with the second display; computing a first amount of the reflowable content based on the first scaled workspace; and causing the second device to re-display the first amount of the reflowable content within the second scaled workspace at the second location and at the second size.
 4. The non-transitory computer-readable medium of claim 1, wherein the digital asset includes reflowable content, and further comprising: determining that a first dimension of a first viewport window associated with the first display is greater than a second dimension of a second viewport window associated with the second display; computing a first amount of the reflowable content based on the second scaled workspace; and causing the first device to re-display the first amount of the reflowable content within the first scaled workspace at the first location and at the first size.
 5. The non-transitory computer-readable medium of claim 1, wherein causing the second device to display the digital asset within the second scaled workspace comprises displaying a first amount of reflowable content based on the second size within the second scaled workspace at the second location and at the second size.
 6. The non-transitory computer-readable medium of claim 1, wherein a first aspect ratio associated with the first display and a second aspect ratio associated with the second display are different.
 7. The non-transitory computer-readable medium of claim 6, wherein a first aspect ratio associated with the first scaled workspace is the same as a second aspect ratio associated with the second scaled workspace.
 8. The non-transitory computer-readable medium of claim 7, wherein the second aspect ratio associated with the second display is greater than the second aspect ratio associated with the second scaled workspace and a horizontal portion of the digital asset is not visible via the second display.
 9. A computer-implemented method for sharing a digital asset across a plurality of displays, the method comprising: receiving container metadata that is generated in response to a digital asset having a first size being placed at a first location within a first scaled workspace that is displayed, at least in part, on a first display coupled to a first device; computing, based on the container metadata and a size associated with a second scaled workspace that is displayed, at least in part, on a second display coupled to a second device, a second location within the second scaled workspace and a second size for the digital asset; and causing the second device to display the digital asset within the second scaled workspace at the second location and at the second size.
 10. The computer-implemented method of claim 1, wherein computing the second location comprises: performing a multiplication operation between a percentage x coordinate included in the container metadata and a width of the second scaled workspace; and performing a multiplication operation between a percentage y coordinate included in the container metadata and a height of the second scaled workspace.
 11. The computer-implemented method of claim 1, wherein the digital asset includes reflowable content, and further comprising: determining that a first dimension of a first viewport window associated with the first display is less than a second dimension of a second viewport window associated with the second display; computing a first amount of the reflowable content based on the first scaled workspace; and causing the second device to re-display the first amount of the reflowable content within the second scaled workspace at the second location and at the second size.
 12. The computer-implemented method of claim 11, wherein the first dimension comprises a vertical resolution associated with the first display expressed in pixels.
 13. The computer-implemented method of claim 1, wherein the digital asset is associated with reflowable content, and further comprising: determining that a first dimension of a first viewport window associated with the first display is greater than a second dimension of a second viewport window associated with the second display; computing a first amount of the reflowable content based on the second scaled workspace; and causing the first device to re-display the first amount of the reflowable content within the first scaled workspace at the first location and at the first size.
 14. The computer-implemented method of claim 9, wherein a first aspect ratio associated with the second scaled workspace is different than a second aspect ratio associated with the second display.
 15. The computer-implemented method of claim 9, wherein a first horizontal width associated with the first display is less than a second horizontal width associated with the first scaled workspace, and a horizontal portion of the digital asset is not visible via the first display.
 16. A system configured to share a digital asset across a plurality of displays, the system comprising: a memory storing a collaboration application; and a processor that is coupled to the memory and, when executing the collaboration application, is configured to: receive container metadata that is generated in response to a digital asset having a first size being placed at a first location within a first scaled workspace that is displayed, at least in part, on a first display coupled to a first device; compute, based on the container metadata and a size associated with a second scaled workspace that is displayed, at least in part, on a second display coupled to a second device, a second location within the second scaled workspace and a second size for the digital asset; and cause the second device to display the digital asset within the second scaled workspace at the second location and at the second size.
 17. The system of claim 16, wherein the collaboration application configures the processor to compute the second size by: performing a multiplication operation between a percentage width included in the container metadata and a width of the second scaled workspace; and performing a multiplication operation between a percentage height included in the container metadata and a height of the second scaled workspace.
 18. The system of claim 16, wherein the digital asset includes reflowable content, and the collaboration application further configures the processor to: determine that a first resolution associated with the first display is less than a second resolution associated with the second display; and compute a first amount of the reflowable content based on the first scaled workspace; and cause the second device to re-display the first amount of the reflowable content within the second scaled workspace at the second location and at the second size.
 19. The system of claim 16, wherein a first aspect ratio associated with the first display and a second aspect ratio associated with the second display are different.
 20. The system of claim 16, wherein the first device comprises one of a laptop computer, a tablet, a smartphone, a desktop computer, a smart television, or a game console. 